<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/rwlock.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/rwlock.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X19MSU5VWF9SV0xPQ0tfSF8w"><span class="b">__LINUX_RWLOCK_H</span></a>
<a name="2" /><span class="True">       2:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X19MSU5VWF9SV0xPQ0tfSF8w"><span class="b">__LINUX_RWLOCK_H</span></a>
<a name="3" /><span class="True">       3:</span> 
<a name="4" /><span class="False">       4:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_ref.html#_X19MSU5VWF9TUElOTE9DS19IXzA_"><span class="b">__LINUX_SPINLOCK_H</span></a>
<a name="5" /><span class="False">       5:</span> <span class="f">#</span> <span class="n">error</span> <span class="e">&quot;please don&apos;t include this file directly&quot;</span>
<a name="6" /><span class="True">       6:</span> <span class="f">#</span><span class="n">endif</span>
<a name="7" /><span class="True">       7:</span> 
<a name="8" /><span class="True">       8:</span> <span class="k">/*</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> * rwlock related methods</span>
<a name="10" /><span class="True">      10:</span> <span class="k"> *</span>
<a name="11" /><span class="True">      11:</span> <span class="k"> * split out from spinlock.h</span>
<a name="12" /><span class="True">      12:</span> <span class="k"> *</span>
<a name="13" /><span class="True">      13:</span> <span class="k"> * portions Copyright 2005, Red Hat, Inc., Ingo Molnar</span>
<a name="14" /><span class="True">      14:</span> <span class="k"> * Released under the General Public License (GPL).</span>
<a name="15" /><span class="True">      15:</span> <span class="k"> */</span>
<a name="16" /><span class="True">      16:</span> 
<a name="17" /><span class="False">      17:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_SPINLOCK</span>
<a name="18" /><span class="False">      18:</span>   <span class="m">extern</span> <span class="m">void</span> <span class="b">__rwlock_init</span><span class="f">(</span><span class="b">rwlock_t</span> <span class="f">*</span><span class="b">lock</span><span class="f">,</span> <span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="b">name</span><span class="f">,</span>
<a name="19" /><span class="False">      19:</span>                 <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="f">*</span><span class="b">key</span><span class="f">)</span><span class="f">;</span>
<a name="20" /><span class="False">      20:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_cndsb2NrX2luaXRfMA__"><span class="b">rwlock_init</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>                    \
<a name="21" /><span class="False">      21:</span> <span class="m">do</span> <span class="f">{</span>                                \
<a name="22" /><span class="False">      22:</span>     <span class="m">static</span> <span class="m">struct</span> <span class="b">lock_class_key</span> <span class="b">__key</span><span class="f">;</span>            \
<a name="23" /><span class="False">      23:</span>                                 \
<a name="24" /><span class="False">      24:</span>     <span class="b">__rwlock_init</span><span class="f">(</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">,</span> <span class="f">#</span><span class="b">lock</span><span class="f">,</span> <span class="f">&amp;</span><span class="b">__key</span><span class="f">)</span><span class="f">;</span>            \
<a name="25" /><span class="False">      25:</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="26" /><span class="True">      26:</span> <span class="f">#</span><span class="n">else</span>
<a name="27" /><span class="True">      27:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_cndsb2NrX2luaXRfMA__"><span class="b">rwlock_init</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>                    \
<a name="28" /><span class="True">      28:</span>     <span class="m">do</span> <span class="f">{</span> <span class="f">*</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_X19SV19MT0NLX1VOTE9DS0VEXzA_"><span class="b">__RW_LOCK_UNLOCKED</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="29" /><span class="True">      29:</span> <span class="f">#</span><span class="n">endif</span>
<a name="30" /><span class="True">      30:</span> 
<a name="31" /><span class="False">      31:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_SPINLOCK</span>
<a name="32" /><span class="False">      32:</span>  <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3JlYWRfbG9ja18w"><span class="b">do_raw_read_lock</span></a><span class="f">(</span><span class="b">rwlock_t</span> <span class="f">*</span><span class="b">lock</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19hY3F1aXJlc18w"><span class="b">__acquires</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span>
<a name="33" /><span class="False">      33:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3JlYWRfbG9ja19mbGFnc18w"><span class="b">do_raw_read_lock_flags</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3JlYWRfbG9ja18w"><span class="b">do_raw_read_lock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="34" /><span class="False">      34:</span>  <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3JlYWRfdHJ5bG9ja18w"><span class="b">do_raw_read_trylock</span></a><span class="f">(</span><span class="b">rwlock_t</span> <span class="f">*</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span>
<a name="35" /><span class="False">      35:</span>  <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3JlYWRfdW5sb2NrXzA_"><span class="b">do_raw_read_unlock</span></a><span class="f">(</span><span class="b">rwlock_t</span> <span class="f">*</span><span class="b">lock</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19yZWxlYXNlc18w"><span class="b">__releases</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span>
<a name="36" /><span class="False">      36:</span>  <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3dyaXRlX2xvY2tfMA__"><span class="b">do_raw_write_lock</span></a><span class="f">(</span><span class="b">rwlock_t</span> <span class="f">*</span><span class="b">lock</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19hY3F1aXJlc18w"><span class="b">__acquires</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span>
<a name="37" /><span class="False">      37:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3dyaXRlX2xvY2tfZmxhZ3NfMA__"><span class="b">do_raw_write_lock_flags</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3dyaXRlX2xvY2tfMA__"><span class="b">do_raw_write_lock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="38" /><span class="False">      38:</span>  <span class="m">extern</span> <span class="m">int</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3dyaXRlX3RyeWxvY2tfMA__"><span class="b">do_raw_write_trylock</span></a><span class="f">(</span><span class="b">rwlock_t</span> <span class="f">*</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span>
<a name="39" /><span class="False">      39:</span>  <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3dyaXRlX3VubG9ja18w"><span class="b">do_raw_write_unlock</span></a><span class="f">(</span><span class="b">rwlock_t</span> <span class="f">*</span><span class="b">lock</span><span class="f">)</span> <a href="cpu.c_macros_ref.html#_X19yZWxlYXNlc18w"><span class="b">__releases</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span>
<a name="40" /><span class="True">      40:</span> <span class="f">#</span><span class="n">else</span>
<a name="41" /><span class="True">      41:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3JlYWRfbG9ja18w"><span class="b">do_raw_read_lock</span></a><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span><a href="cpu.c_macros_ref.html#_X19hY3F1aXJlXzA_"><span class="b">__acquire</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span> <span class="b">arch_read_lock</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="42" /><span class="True">      42:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3JlYWRfbG9ja19mbGFnc18w"><span class="b">do_raw_read_lock_flags</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span> \
<a name="43" /><span class="True">      43:</span>         <span class="m">do</span> <span class="f">{</span><a href="cpu.c_macros_ref.html#_X19hY3F1aXJlXzA_"><span class="b">__acquire</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span> <a href="cpu.c_macros_ref.html#_YXJjaF9yZWFkX2xvY2tfZmxhZ3NfMA__"><span class="b">arch_read_lock_flags</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">,</span> <span class="f">*</span><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="44" /><span class="True">      44:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3JlYWRfdHJ5bG9ja18w"><span class="b">do_raw_read_trylock</span></a><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span>    <span class="b">arch_read_trylock</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">)</span>
<a name="45" /><span class="True">      45:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3JlYWRfdW5sb2NrXzA_"><span class="b">do_raw_read_unlock</span></a><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span><span class="b">arch_read_unlock</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">)</span><span class="f">;</span> <a href="cpu.c_macros_ref.html#_X19yZWxlYXNlXzA_"><span class="b">__release</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="46" /><span class="True">      46:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3dyaXRlX2xvY2tfMA__"><span class="b">do_raw_write_lock</span></a><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span><a href="cpu.c_macros_ref.html#_X19hY3F1aXJlXzA_"><span class="b">__acquire</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span> <span class="b">arch_write_lock</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="47" /><span class="True">      47:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3dyaXRlX2xvY2tfZmxhZ3NfMA__"><span class="b">do_raw_write_lock_flags</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span> \
<a name="48" /><span class="True">      48:</span>         <span class="m">do</span> <span class="f">{</span><a href="cpu.c_macros_ref.html#_X19hY3F1aXJlXzA_"><span class="b">__acquire</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span> <a href="cpu.c_macros_ref.html#_YXJjaF93cml0ZV9sb2NrX2ZsYWdzXzA_"><span class="b">arch_write_lock_flags</span></a><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">,</span> <span class="f">*</span><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="49" /><span class="True">      49:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3dyaXRlX3RyeWxvY2tfMA__"><span class="b">do_raw_write_trylock</span></a><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span>    <span class="b">arch_write_trylock</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">)</span>
<a name="50" /><span class="True">      50:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_ref.html#_ZG9fcmF3X3dyaXRlX3VubG9ja18w"><span class="b">do_raw_write_unlock</span></a><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span>    <span class="m">do</span> <span class="f">{</span><span class="b">arch_write_unlock</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">)</span><span class="f">;</span> <a href="cpu.c_macros_ref.html#_X19yZWxlYXNlXzA_"><span class="b">__release</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span> <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="51" /><span class="True">      51:</span> <span class="f">#</span><span class="n">endif</span>
<a name="52" /><span class="True">      52:</span> 
<a name="53" /><span class="True">      53:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF9jYW5fbG9ja18w"><span class="b">read_can_lock</span></a><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span>        <span class="b">arch_read_can_lock</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">)</span>
<a name="54" /><span class="True">      54:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfY2FuX2xvY2tfMA__"><span class="b">write_can_lock</span></a><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span>        <span class="b">arch_write_can_lock</span><span class="f">(</span><span class="f">&amp;</span><span class="f">(</span><span class="b">rwlock</span><span class="f">)</span><span class="f">-&gt;</span><span class="b">raw_lock</span><span class="f">)</span>
<a name="55" /><span class="True">      55:</span> 
<a name="56" /><span class="True">      56:</span> <span class="k">/*</span>
<a name="57" /><span class="True">      57:</span> <span class="k"> * Define the various rw_lock methods.  Note we define these</span>
<a name="58" /><span class="True">      58:</span> <span class="k"> * regardless of whether CONFIG_SMP or CONFIG_PREEMPT are set. The various</span>
<a name="59" /><span class="True">      59:</span> <span class="k"> * methods are defined as nops in the case they are not required.</span>
<a name="60" /><span class="True">      60:</span> <span class="k"> */</span>
<a name="61" /><span class="True">      61:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF90cnlsb2NrXzA_"><span class="b">read_trylock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X19jb25kX2xvY2tfMA__"><span class="b">__cond_lock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">_raw_read_trylock</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">)</span>
<a name="62" /><span class="True">      62:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfdHJ5bG9ja18w"><span class="b">write_trylock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>    <a href="cpu.c_macros_ref.html#_X19jb25kX2xvY2tfMA__"><span class="b">__cond_lock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">_raw_write_trylock</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">)</span>
<a name="63" /><span class="True">      63:</span> 
<a name="64" /><span class="True">      64:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfbG9ja18w"><span class="b">write_lock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>    <span class="b">_raw_write_lock</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="65" /><span class="True">      65:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF9sb2NrXzA_"><span class="b">read_lock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <span class="b">_raw_read_lock</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="66" /><span class="True">      66:</span> 
<a name="67" /><span class="True">      67:</span> <span class="f">#</span><span class="n">if</span> <span class="b">defined</span><span class="f">(</span><a href="cpu.c_macros_ref.html#_Q09ORklHX1NNUF8w"><span class="b">CONFIG_SMP</span></a><span class="f">)</span> <span class="f">||</span> <span class="b">defined</span><span class="f">(</span><span class="b">CONFIG_DEBUG_SPINLOCK</span><span class="f">)</span>
<a name="68" /><span class="True">      68:</span> 
<a name="69" /><span class="True">      69:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF9sb2NrX2lycXNhdmVfMA__"><span class="b">read_lock_irqsave</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span>            \
<a name="70" /><span class="True">      70:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="71" /><span class="True">      71:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="72" /><span class="True">      72:</span>         <span class="b">flags</span> <span class="f">=</span> <span class="b">_raw_read_lock_irqsave</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span>    \
<a name="73" /><span class="True">      73:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="74" /><span class="True">      74:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfbG9ja19pcnFzYXZlXzA_"><span class="b">write_lock_irqsave</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span>            \
<a name="75" /><span class="True">      75:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="76" /><span class="True">      76:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="77" /><span class="True">      77:</span>         <span class="b">flags</span> <span class="f">=</span> <span class="b">_raw_write_lock_irqsave</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span><span class="f">;</span>    \
<a name="78" /><span class="True">      78:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="79" /><span class="True">      79:</span> 
<a name="80" /><span class="False">      80:</span> <span class="f">#</span><span class="n">else</span>
<a name="81" /><span class="False">      81:</span> 
<a name="82" /><span class="False">      82:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF9sb2NrX2lycXNhdmVfMA__"><span class="b">read_lock_irqsave</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span>            \
<a name="83" /><span class="False">      83:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="84" /><span class="False">      84:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="85" /><span class="False">      85:</span>         <span class="b">_raw_read_lock_irqsave</span><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="86" /><span class="False">      86:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="87" /><span class="False">      87:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfbG9ja19pcnFzYXZlXzA_"><span class="b">write_lock_irqsave</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span>            \
<a name="88" /><span class="False">      88:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="89" /><span class="False">      89:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="90" /><span class="False">      90:</span>         <span class="b">_raw_write_lock_irqsave</span><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="91" /><span class="False">      91:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="92" /><span class="False">      92:</span> 
<a name="93" /><span class="True">      93:</span> <span class="f">#</span><span class="n">endif</span>
<a name="94" /><span class="True">      94:</span> 
<a name="95" /><span class="True">      95:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF9sb2NrX2lycV8w"><span class="b">read_lock_irq</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <span class="b">_raw_read_lock_irq</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="96" /><span class="True">      96:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF9sb2NrX2JoXzA_"><span class="b">read_lock_bh</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <span class="b">_raw_read_lock_bh</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="97" /><span class="True">      97:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_d3JpdGVfbG9ja19pcnFfMA__"><span class="b">write_lock_irq</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <span class="b">_raw_write_lock_irq</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="98" /><span class="True">      98:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfbG9ja19iaF8w"><span class="b">write_lock_bh</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <span class="b">_raw_write_lock_bh</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="99" /><span class="True">      99:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF91bmxvY2tfMA__"><span class="b">read_unlock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <a href="cpu.c_macros_noref.html#_X3Jhd19yZWFkX3VubG9ja18w"><span class="b">_raw_read_unlock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="100" /><span class="True">     100:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfdW5sb2NrXzA_"><span class="b">write_unlock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <a href="cpu.c_macros_noref.html#_X3Jhd193cml0ZV91bmxvY2tfMA__"><span class="b">_raw_write_unlock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="101" /><span class="True">     101:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF91bmxvY2tfaXJxXzA_"><span class="b">read_unlock_irq</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <a href="cpu.c_macros_noref.html#_X3Jhd19yZWFkX3VubG9ja19pcnFfMA__"><span class="b">_raw_read_unlock_irq</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="102" /><span class="True">     102:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_d3JpdGVfdW5sb2NrX2lycV8w"><span class="b">write_unlock_irq</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <a href="cpu.c_macros_ref.html#_X3Jhd193cml0ZV91bmxvY2tfaXJxXzA_"><span class="b">_raw_write_unlock_irq</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="103" /><span class="True">     103:</span> 
<a name="104" /><span class="True">     104:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF91bmxvY2tfaXJxcmVzdG9yZV8w"><span class="b">read_unlock_irqrestore</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span>            \
<a name="105" /><span class="True">     105:</span>     <span class="m">do</span> <span class="f">{</span>                            \
<a name="106" /><span class="True">     106:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>        \
<a name="107" /><span class="True">     107:</span>         <span class="b">_raw_read_unlock_irqrestore</span><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="108" /><span class="True">     108:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="109" /><span class="True">     109:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_cmVhZF91bmxvY2tfYmhfMA__"><span class="b">read_unlock_bh</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <span class="b">_raw_read_unlock_bh</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="110" /><span class="True">     110:</span> 
<a name="111" /><span class="True">     111:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfdW5sb2NrX2lycXJlc3RvcmVfMA__"><span class="b">write_unlock_irqrestore</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span>        \
<a name="112" /><span class="True">     112:</span>     <span class="m">do</span> <span class="f">{</span>                        \
<a name="113" /><span class="True">     113:</span>         <a href="cpu.c_macros_ref.html#_dHlwZWNoZWNrXzA_"><span class="b">typecheck</span></a><span class="f">(</span><span class="m">unsigned</span> <span class="m">long</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="114" /><span class="True">     114:</span>         <span class="b">_raw_write_unlock_irqrestore</span><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span><span class="f">;</span>    \
<a name="115" /><span class="True">     115:</span>     <span class="f">}</span> <span class="m">while</span> <span class="f">(</span><span class="c">0</span><span class="f">)</span>
<a name="116" /><span class="True">     116:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfdW5sb2NrX2JoXzA_"><span class="b">write_unlock_bh</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span>        <span class="b">_raw_write_unlock_bh</span><span class="f">(</span><span class="b">lock</span><span class="f">)</span>
<a name="117" /><span class="True">     117:</span> 
<a name="118" /><span class="True">     118:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_d3JpdGVfdHJ5bG9ja19pcnFzYXZlXzA_"><span class="b">write_trylock_irqsave</span></a><span class="f">(</span><span class="b">lock</span><span class="f">,</span> <span class="b">flags</span><span class="f">)</span> \
<a name="119" /><span class="True">     119:</span> <span class="f">(</span><span class="f">{</span> \
<a name="120" /><span class="True">     120:</span>     <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX3NhdmVfMA__"><span class="b">local_irq_save</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> \
<a name="121" /><span class="True">     121:</span>     <a href="cpu.c_macros_noref.html#_d3JpdGVfdHJ5bG9ja18w"><span class="b">write_trylock</span></a><span class="f">(</span><span class="b">lock</span><span class="f">)</span> <span class="f">?</span> \
<a name="122" /><span class="True">     122:</span>     <span class="c">1</span> <span class="f">:</span> <span class="f">(</span><span class="f">{</span> <a href="cpu.c_macros_ref.html#_bG9jYWxfaXJxX3Jlc3RvcmVfMA__"><span class="b">local_irq_restore</span></a><span class="f">(</span><span class="b">flags</span><span class="f">)</span><span class="f">;</span> <span class="c">0</span><span class="f">;</span> <span class="f">}</span><span class="f">)</span><span class="f">;</span> \
<a name="123" /><span class="True">     123:</span> <span class="f">}</span><span class="f">)</span>
<a name="124" /><span class="True">     124:</span> 
<a name="125" /><span class="True">     125:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* __LINUX_RWLOCK_H */</span>
<a name="126" /><span class="True">     126:</span> </pre>
  </body>
</html>
